package com.yuncheng.spcyApi.selectXzxkApi.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import com.yuncheng.spcyApi.mapper.XzXkMapper;
import com.yuncheng.spcyApi.selectXzxkApi.constant.XzXkConstant;
import com.yuncheng.spcyApi.selectXzxkApi.constant.XzXkEnumConstant;
import com.yuncheng.spcyApi.selectXzxkApi.vo.*;
import com.yuncheng.spcyApi.utils.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.io.IOException;
import java.sql.Clob;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@Component(value = "ypscXzxkService")
public class YpscXzxkService {
    private static final Logger log = LoggerFactory.getLogger(YpscXzxkService.class);

    @Resource
    @Lazy
    private XzXkMapper xzXkMapper;

    /**
     *  sqsxbm (001002005) / 变更医疗机构制剂许可证配制范围或配制地址的审批
     * @param sqsxid
     * @param sqsx
     * @return
     */
    public Map bgYlqxZjXkzPzFwHPzDzDsp(String sqsxid, XzspSqsxVo sqsx){
        Map resultMap = new HashMap();

            // 变更前、变更后的 内容;
            resultMap.put("lsxx" ,this.lsxx(sqsxid));


            // 企业信息
            List<XzspSqsxXdrxxVo> qyList = xzXkMapper.selectQyxxList(sqsxid);
            if (CollectionUtils.isNotEmpty(qyList)) {
                resultMap.put("qyxx", qyList.get(0));
            }

            // 企业人员-主要人员 / 其他人员
            List<QyRyVo> qyryList = xzXkMapper.selectQyRyList(sqsxid, null, true);
            resultMap.put("primaryQyryList", qyryList);



        return resultMap;
    }

    /**
     *  sqsxbm (001002001) / 变更《药品生产许可证》生产范围或生产地址审批
     */
    public Map bgYpscxkzScfwHScdzSp(String sqsxid, XzspSqsxVo sqsx){
        Map resultMap = new HashMap();


            // 变更前、变更后的 内容;
            resultMap.put("lsxx" ,this.lsxx(sqsxid));

            // 生产范围 - 字典管理
            List<Map<String, Object>> zdglList = xzXkMapper.zdglTree(XzXkEnumConstant.Zdgl_ywflzd_ypsc_Xmfw.getIndex());
            resultMap.put("scfwZdglList", zdglList);

            // 生产品种
            List<XzspXksqSxsqCpVo> cpMapList = xzXkMapper.selectCp(sqsxid);
//            JSONArray cpMapArray = MapUtils.listMapToJson(cpMapList);
            resultMap.put("scpzList", cpMapList);


            // 企业信息
            List<XzspSqsxXdrxxVo> qyList = xzXkMapper.selectQyxxList(sqsxid);
            if (CollectionUtils.isNotEmpty(qyList)){
                XzspSqsxXdrxxVo qyxxObject = qyList.get(0);
                resultMap.put("qyxx", qyxxObject);

                // 委托受托情况
                String qyid = qyxxObject.getId();
                List<XzspYpscwtHstqk> wtstqkList = xzXkMapper.selectWtStQk(qyid);
//                JSONArray wtstqkArray = MapUtils.listMapToJson(wtstqkList);
                resultMap.put("wtstqkList", wtstqkList);

            } else {
                resultMap.put("qyxx", new JSONObject());  // 企业信息
                resultMap.put("wtstqkList", new JSONArray()); //  委托受托情况
            }

            // 企业认证
            List<XzspQyrzVo> qyrzList = xzXkMapper.selectQyrz(sqsxid);
//            JSONArray qyrzArray = MapUtils.listMapToJson(qyrzList);
            resultMap.put("qyrzList", qyrzList);

            // 企业人员-主要人员
            List<QyRyVo> qyryList = xzXkMapper.selectQyRyList(sqsxid, null, true);
            resultMap.put("primaryQyryList", qyryList);


        return resultMap;
    }

    /**
     *  sqsxbm (001002035) / 医疗机构委托配制中药制剂备案
     */
    public Map yljgWtPzZyZjBa(String sqsxid, XzspSqsxVo sqsx){
        Map resultMap = new HashMap();


        // 企业信息
        List<XzspSqsxXdrxxVo> qyList = xzXkMapper.selectQyxxList(sqsxid);

        if (CollectionUtils.isNotEmpty(qyList)){

//            JSONObject qyxxObject = MapUtils.mapToObject(qyList.get(0));
//            resultMap.put("qyxx", qyxxObject);

//            MapUtils.listMapToJson(qyList);
            // 委托方医疗机构信息
            for (XzspSqsxXdrxxVo xdrMap : qyList){
                String qysx_id = xdrMap.getQysx_id();
                if (qysx_id.equals(XzXkEnumConstant.Xdrxx_QYSX_ID_1.getIndex())){
                    // 委托方医疗机构信息
                    resultMap.put("qyxx", xdrMap);

                    // 主要人员
                    if (xdrMap != null){
                        // 企业人员-主要人员
                        List<QyRyVo> qyryList = xzXkMapper.selectQyRyListTwo(xdrMap.getId(), null, true);
                        resultMap.put("primaryQyryList", qyryList);
                    }


                }else if (qysx_id.equals(XzXkEnumConstant.Xdrxx_QYSX_ID_7.getIndex())){
                    // 接受委托医疗机构信息
                    resultMap.put("jsWtYljgxx", xdrMap);

                    // 主要人员
                    if (xdrMap != null){
                        // 企业人员-主要人员
                        List<QyRyVo> qyryList = xzXkMapper.selectQyRyListTwo(xdrMap.getId(), null, true);
                        resultMap.put("yljgQyryList", qyryList);
                    }

                }else if (qysx_id.equals(XzXkEnumConstant.Xdrxx_QYSX_ID_15.getIndex())){
                    // 接受委托药品生产单位信息
                    resultMap.put("jsWtQyxx", xdrMap);

                    // 主要人员
                    if (xdrMap != null){
                        // 企业人员-主要人员
                        List<QyRyVo> qyryList = xzXkMapper.selectQyRyListTwo(xdrMap.getId(), null, true);
                        resultMap.put("jsWtQyryList", qyryList);
                    }
                }
            }

        }else {
            resultMap.put("qyxx", new JSONObject());
            resultMap.put("jsWtYljgxx", new JSONObject());
            resultMap.put("jsWtQyxx", new JSONObject());

            resultMap.put("primaryQyryList", new JSONArray());
            resultMap.put("yljgQyryList", new JSONArray());
            resultMap.put("jsWtQyryList", new JSONArray());
        }

        // 药品委托生产附加表
        List<XzspYpwtscfjVo> ypwtScfjList = xzXkMapper.selectYpwtScfj(sqsxid);
        resultMap.put("ypwtScfj", ypwtScfjList);
        /*if (CollectionUtils.isNotEmpty(ypwtScfjList)){
            resultMap.put("ypwtScfj",MapUtils.mapToObject(ypwtScfjList.get(0)));
        }else {
            resultMap.put("ypwtScfj", new JSONObject());
        }*/

        return resultMap;
    }


    /**
     * sqsxbm (001002051) / 药品生产质量管理规范符合性检查申请
     */
    public Map ypscZlGlGfFhxJcSq(String sqsxid, XzspSqsxVo sqsx){
        Map resultMap = new HashMap();

        // 经营范围
        List<XzspJyfwVo> jyfwList = xzXkMapper.selectJyfw(sqsxid);
        if (CollectionUtils.isNotEmpty(jyfwList)){
            resultMap.put("jyfw", jyfwList.get(0));
        }else {
            resultMap.put("jyfw", new JSONObject());
        }

        // GMP符合性检查
        XzspGmpfhxjcVo gmpFhxJcMap = xzXkMapper.selectGmpFhxJc(sqsxid);
//        JSONObject fhxJcfwObject = MapUtils.mapToObject(gmpFhxJcMap);
        resultMap.put("fhxjc", gmpFhxJcMap);

        // GMP符合性检查产品信息
        List<XzspGmpfhxjcCpxxVo> gmpFhxJcCpxx = xzXkMapper.selectGmpFhxJcCpxx(sqsxid);
//        JSONArray fhxJccpList = MapUtils.listMapToJson(gmpFhxJcCpxx);
        resultMap.put("fhxJccpList", gmpFhxJcCpxx);

        // 企业项目资产、产品品种
        List<XzspXmzcVo> xmzcList = xzXkMapper.selectXmzc(sqsxid);
        if (CollectionUtils.isNotEmpty(xmzcList)){
            resultMap.put("xmzc", xmzcList.get(0));
        }else {
            resultMap.put("xmzc", new JSONObject());
        }

        // 企业人员数量
        List<XzspRyslVo> ryslList = xzXkMapper.selectRysl(sqsxid);
        if (CollectionUtils.isNotEmpty(ryslList)){
            resultMap.put("rysl", ryslList.get(0));
        }else {
            resultMap.put("rysl", new JSONObject());
        }

        // 企业信息
        List<XzspSqsxXdrxxVo> qyList = xzXkMapper.selectQyxxList(sqsxid);

        if (CollectionUtils.isNotEmpty(qyList)){
            resultMap.put("qyxx", qyList.get(0));
        }else {
            resultMap.put("qyxx", new JSONObject());
        }

        // 事项申请互联网网站服务
        List<XzspWzfwVo> wzfwList = xzXkMapper.selectWzfw(sqsxid);
        resultMap.put("wzfw", wzfwList);
        /*if (CollectionUtils.isNotEmpty(wzfwList)){
            resultMap.put("wzfw", MapUtils.mapToObject(wzfwList.get(0)));
        }else {
            resultMap.put("wzfw", new JSONObject());
        }*/

        // 药品生产企业经营场所
        List<XzspJycsVo> jycsList = xzXkMapper.selectJycs(sqsxid);
        if (CollectionUtils.isNotEmpty(jycsList)){
            resultMap.put("jycs", jycsList.get(0));
        }else {
            resultMap.put("jycs", new JSONObject());
        }

        // 企业人员-主要人员 / 其他人员
        resultMap.putAll(this.qyryListMap(sqsxid));

        return resultMap;
    }


    /**
     * sqsxbm (001002003) / 药品生产企业设立审批
     */
    public Map ypscQySlSp(String sqsxid, XzspSqsxVo sqsx){
        Map resultMap = new HashMap();

        // 企业信息
        List<XzspSqsxXdrxxVo> qyList = xzXkMapper.selectQyxxList(sqsxid);
        if (CollectionUtils.isNotEmpty(qyList)){
            XzspSqsxXdrxxVo qyxxObject = qyList.get(0);
            resultMap.put("qyxx", qyList.get(0));

            // 委托受托情况
            String qyid = qyxxObject.getId();
            List<XzspYpscwtHstqk> wtstqkList = xzXkMapper.selectWtStQk(qyid);
            resultMap.put("wtstqkList", wtstqkList);

        }else {
            resultMap.put("qyxx", new JSONObject()); // 企业信息
            resultMap.put("wtstqkList", new JSONArray()); // 委托受托情况
        }

        // 药品生产企业经营场所
        List<XzspJycsVo> jycsList = xzXkMapper.selectJycs(sqsxid);
        if (CollectionUtils.isNotEmpty(jycsList)){
            resultMap.put("jycs", jycsList.get(0));
        }else {
            resultMap.put("jycs", new JSONObject());
        }

        // 企业项目资产、产品品种
        List<XzspXmzcVo> xmzcList = xzXkMapper.selectXmzc(sqsxid);
        if (CollectionUtils.isNotEmpty(xmzcList)){
            resultMap.put("xmzc", xmzcList.get(0));
        }else {
            resultMap.put("xmzc", new JSONObject());
        }

        // 企业人员数量
        List<XzspRyslVo> ryslList = xzXkMapper.selectRysl(sqsxid);
        if (CollectionUtils.isNotEmpty(ryslList)){
            resultMap.put("rysl", ryslList.get(0));
        }else {
            resultMap.put("rysl", new JSONObject());
        }

        // 企业药品生产车间、配置室
        List<XzspSccjVo> sccjMapList = xzXkMapper.selectSccj(sqsxid);
//        JSONArray sccjMapArray = MapUtils.listMapToJson(sccjMapList);
        resultMap.put("bghSccjList", sccjMapList);

        // 生产品种
        List<XzspXksqSxsqCpVo> cpMapList = xzXkMapper.selectCp(sqsxid);
//        JSONArray cpMapArray = MapUtils.listMapToJson(cpMapList);
        resultMap.put("scpzList", cpMapList);

        // 企业认证
        List<XzspQyrzVo> qyrzList = xzXkMapper.selectQyrz(sqsxid);
//        JSONArray qyrzArray = MapUtils.listMapToJson(qyrzList);
        resultMap.put("qyrzList", qyrzList);

        // 企业人员-主要人员 / 其他人员
        resultMap.putAll(this.qyryListMap(sqsxid));

        return resultMap;
    }


    /**
     * sqsxbm (001002028) / 出口欧盟原料药证明文件审批 (待确认)
     */
    public Map ckomYlyZmwjSp(String sqsxid){
        Map resultMap = new HashMap();

        // 企业信息
        List<XzspSqsxXdrxxVo> qyList = xzXkMapper.selectQyxxList(sqsxid);
        if (CollectionUtils.isNotEmpty(qyList)){
            resultMap.put("qyxx", qyList.get(0));

        }else {
            resultMap.put("qyxx", new JSONObject()); // 企业信息
        }

        // 出口欧盟原料药证明文件申请
        List<XzspCkomYlyzmwjVo> wjsqList = xzXkMapper.selectCkomYlyZmwj(sqsxid);
        if (CollectionUtils.isNotEmpty(wjsqList)){
            resultMap.put("ckomQyxx", wjsqList.get(0));
        }else {
            resultMap.put("ckomQyxx", new JSONObject()); // 出口欧盟原料药证明文件申请
        }

        // 出口欧盟原料药明细
        List<XzspChomYlymxVo> ckomYlyList = xzXkMapper.selectCkomYlyMx(sqsxid);
//        List<Map<String, Object>> ckomYlyArr = MapUtils.listMapKeyByDelEmpty(ckomYlyList);
        resultMap.put("ckomYlyList", ckomYlyList);

        return resultMap;
    }

    /**
     * sqsxbm (001002026) / 药品出口销售证明申请 (待确认)
     * // cpsfzc 产品是否注册;@value 0：产品未注册，但符合与我国有相关协议的国际组织要求  |1：产品规格均已批准上市  |2：相关产品已批准上市但申报规格未注册
     * // wzzgzcdly 未在中国注册的理由;@value 1：产品专门用于治疗中国以外地域的疾病  |2：产品处方组成有调整，以改进在中国以外地域的稳定性  |3：产品处方组成有调整，以除去在进口国未被批准的辅料 |4：受专利权限 |5：其他原因
     * // ypgghdxkzzgscssy 该药品规格是否获得许可在中国市场上使用;@value 1：是|2：否
     * // ypggsfyjzzgscsy 该药品规格是否已经在中国市场上使用;@value 1：是|2：否
     */
    public Map ypckXszmSq(String sqsxid){
        Map resultMap = new HashMap();

        // 企业信息
        List<XzspSqsxXdrxxVo> qyList = xzXkMapper.selectQyxxList(sqsxid);
        if (CollectionUtils.isNotEmpty(qyList)){
            // 委托方医疗机构信息
            for (XzspSqsxXdrxxVo xdrMap : qyList){
                String qysx_id = xdrMap.getQysx_id();
                if (qysx_id.equals(XzXkEnumConstant.Xdrxx_QYSX_ID_1.getIndex())){
                    // 委托方医疗机构信息
                    resultMap.put("qyxx", xdrMap);

                }else if (qysx_id.equals(XzXkEnumConstant.Xdrxx_QYSX_ID_2.getIndex())){
                    // 接受委托医疗机构信息
                    resultMap.put("scqy", xdrMap);

                }
            }

        }else {
            resultMap.put("qyxx", new JSONObject());
            resultMap.put("scqy", new JSONObject());
        }

        // 药品出口销售证明申请
        List<XzspYpckxszmVo> ypckzszmList = xzXkMapper.selectYpckxszm(sqsxid);
        if (CollectionUtils.isNotEmpty(ypckzszmList)){
            resultMap.put("ypckXszm", ypckzszmList.get(0));
        }else {
            resultMap.put("ypckXszm", new JSONObject());
        }

        return resultMap;
    }

    /**
     * sqsxbm (001002016) / 放射性药品生产许可证审批 (待确认)
     */
    public Map fsxYpscxkzSp(String sqsxid){
        Map resultMap = new HashMap();

        // 企业项目资产、产品品种
        List<XzspXmzcVo> xmzcList = xzXkMapper.selectXmzc(sqsxid);
        if (CollectionUtils.isNotEmpty(xmzcList)){
            resultMap.put("xmzc", xmzcList.get(0));
        }else {
            resultMap.put("xmzc", new JSONObject());
        }

        // 企业人员数量
        List<XzspRyslVo> ryslList = xzXkMapper.selectRysl(sqsxid);
        if (CollectionUtils.isNotEmpty(ryslList)){
            resultMap.put("rysl", ryslList.get(0));
        }else {
            resultMap.put("rysl", new JSONObject());
        }

        // 企业信息
        List<XzspSqsxXdrxxVo> qyList = xzXkMapper.selectQyxxList(sqsxid);

        if (CollectionUtils.isNotEmpty(qyList)){

            resultMap.put("qyxx", qyList.get(0));
        }else {
            resultMap.put("qyxx", new JSONObject());
        }

        // 经营范围
        List<XzspJyfwVo> jyfwList = xzXkMapper.selectJyfw(sqsxid);
        if (CollectionUtils.isNotEmpty(jyfwList)){
            resultMap.put("jyfw", jyfwList.get(0));
        }else {
            resultMap.put("jyfw", new JSONObject());
        }

        // 生产品种
        List<XzspXksqSxsqCpVo> cpMapList = xzXkMapper.selectCp(sqsxid);
//        JSONArray cpMapArray = MapUtils.listMapToJson(cpMapList);
        resultMap.put("scpzList", cpMapList);

        // 药品生产企业经营场所
        List<XzspJycsVo> jycsList = xzXkMapper.selectJycs(sqsxid);
        if (CollectionUtils.isNotEmpty(jycsList)){
            resultMap.put("jycs", jycsList.get(0));
        }else {
            resultMap.put("jycs", new JSONObject());
        }

        // 设备
        List<XzspSbVo> sbqkList = xzXkMapper.ypltSelectSbQk(sqsxid);
        if (CollectionUtils.isNotEmpty(sbqkList)){
            List<XzspSbVo> scsbList = sbqkList.stream()
                    .filter(f -> StringUtils.isNotBlank(f.getSblx())
                            && f.getSblx().equals("生产设备"))
                    .collect(Collectors.toList());

            List<XzspSbVo> jysbList = sbqkList.stream()
                    .filter(f -> StringUtils.isNotBlank(f.getSblx())
                            && f.getSblx().equals("检验设备"))
                    .collect(Collectors.toList());
            resultMap.put("scsbList", scsbList);
            resultMap.put("jysbList", jysbList);
        }else {
            resultMap.put("scsbList", new ArrayList<>(1));
            resultMap.put("jysbList", new ArrayList<>(1));
        }

        // 企业人员-主要人员 / 其他人员
        resultMap.putAll(this.qyryListMap(sqsxid));

        // 仓库信息
        List<XzspCkVo> ckList = xzXkMapper.ypltSelectCkxx(sqsxid);
        if (CollectionUtils.isNotEmpty(ckList)){
            resultMap.put("ck", ckList.get(0));
        }else {
            resultMap.put("ck", new JSONObject());
        }

        return resultMap;
    }

    /**
     * sqsxbm (001002058) / 放射性药品生产许可证变更 (待确认)
     */
    public Map fsxYpscxkzBg(String sqsxid){
        Map resultMap = new HashMap();

        // 企业项目资产、产品品种
        List<XzspXmzcVo> xmzcList = xzXkMapper.selectXmzc(sqsxid);
        if (CollectionUtils.isNotEmpty(xmzcList)){
            resultMap.put("xmzc", xmzcList.get(0));
        }else {
            resultMap.put("xmzc", new JSONObject());
        }

        // 企业人员数量
        List<XzspRyslVo> ryslList = xzXkMapper.selectRysl(sqsxid);
        if (CollectionUtils.isNotEmpty(ryslList)){
            resultMap.put("rysl", ryslList.get(0));
        }else {
            resultMap.put("rysl", new JSONObject());
        }

        // 企业信息
        List<XzspSqsxXdrxxVo> qyList = xzXkMapper.selectQyxxList(sqsxid);

        if (CollectionUtils.isNotEmpty(qyList)){
            resultMap.put("qyxx", qyList.get(0));
        }else {
            resultMap.put("qyxx", new JSONObject());
        }

        // 企业人员-主要人员
        List<QyRyVo> qyryList = xzXkMapper.selectQyRyList(sqsxid, null, true);
        resultMap.put("primaryQyryList", qyryList);

        // 经营范围
        List<XzspJyfwVo> jyfwList = xzXkMapper.selectJyfw(sqsxid);
        if (CollectionUtils.isNotEmpty(jyfwList)){
            resultMap.put("jyfw", jyfwList.get(0));
        }else {
            resultMap.put("jyfw", new JSONObject());
        }

        // 生产品种
        List<XzspXksqSxsqCpVo> cpMapList = xzXkMapper.selectCp(sqsxid);
//        JSONArray cpMapArray = MapUtils.listMapToJson(cpMapList);
        resultMap.put("scpzList", cpMapList);

        // 药品生产企业经营场所
        List<XzspJycsVo> jycsList = xzXkMapper.selectJycs(sqsxid);
        if (CollectionUtils.isNotEmpty(jycsList)){
            resultMap.put("jycs", jycsList.get(0));
        }else {
            resultMap.put("jycs", new JSONObject());
        }

        // 设备
        List<XzspSbVo> sbqkList = xzXkMapper.ypltSelectSbQk(sqsxid);
        if (CollectionUtils.isNotEmpty(sbqkList)){
            List<XzspSbVo> scsbList = sbqkList.stream()
                    .filter(f -> StringUtils.isNotBlank(f.getSblx())
                            && f.getSblx().equals("生产设备"))
                    .collect(Collectors.toList());

            List<XzspSbVo> jysbList = sbqkList.stream()
                    .filter(f -> StringUtils.isNotBlank(f.getSblx())
                            && f.getSblx().equals("检验设备"))
                    .collect(Collectors.toList());
            resultMap.put("scsbList", scsbList);
            resultMap.put("jysbList", jysbList);
        }else {
            resultMap.put("scsbList", new ArrayList<>(1));
            resultMap.put("jysbList", new ArrayList<>(1));
        }

        // 仓库信息
        List<XzspCkVo> ckList = xzXkMapper.ypltSelectCkxx(sqsxid);
        if (CollectionUtils.isNotEmpty(ckList)){
            resultMap.put("ck", ckList.get(0));
        }else {
            resultMap.put("ck", new JSONObject());
        }

        // 变更前、变更后的 内容;
        resultMap.put("lsxx" ,this.lsxx(sqsxid));

        return resultMap;
    }

    /**
     * sqsxbm (001002013) / 放射性药品使用许可证核发（一、二类） (待确认)
     */
    public Map fsxYpsyxkzHfOneAndTwo(String sqsxid){
        Map resultMap = new HashMap();

        // 企业信息
        List<XzspSqsxXdrxxVo> qyList = xzXkMapper.selectQyxxList(sqsxid);
        if (CollectionUtils.isNotEmpty(qyList)){
            resultMap.put("qyxx", qyList.get(0));
        }else {
            resultMap.put("qyxx", new JSONObject());
        }

        // 企业人员-主要人员
        List<QyRyVo> qyryList = xzXkMapper.selectQyRyList(sqsxid, null, true);
        resultMap.put("primaryQyryList", qyryList);

        // 药品使用科室情况表
        List<XzspYpsyksVo> ypsyksList = xzXkMapper.selectYpsyks(sqsxid);
        if (CollectionUtils.isNotEmpty(ypsyksList)){
//            JSONObject syksObject = MapUtils.mapToObject(ypsyksList.get(0));
            resultMap.put("ksxx", ypsyksList.get(0));
        }else {
            resultMap.put("ksxx", new JSONObject());
        }
        // 医疗机构放射药品使用情况
        List<XzspYljgfsxypsyVo> yljgFsxYpsyList = xzXkMapper.selectYljgFsxYpsy(sqsxid);
//        JSONArray yljgFsxYpsyArray = MapUtils.listMapToJson(yljgFsxYpsyList);
        resultMap.put("fsxYpsyList", yljgFsxYpsyList);

        // 医疗机构药品使用科室人员表
        List<XzspYpsyksryVo> ypsyksryList = xzXkMapper.selectYpsyksry(sqsxid);
//        JSONArray ypsyksryArray = MapUtils.listMapToJson(ypsyksryList);
        resultMap.put("ksryList", ypsyksryList);

        return resultMap;
    }

    /**
     * 企业人员-主要人员 / 其他人员
     */
    public Map qyryListMap(String sqsxid){
         Map resultMap = new HashMap();

        // 企业人员-主要人员
        List<QyRyVo> qyryArray = xzXkMapper.selectQyRyListVo(sqsxid, null, true);
        resultMap.put("primaryQyryList", qyryArray);

        // 企业其他人员
        List<QyRyVo> qtQyryArray = xzXkMapper.selectQyRyListVo(sqsxid, XzXkConstant.Fzrlx_Type_00, false);
        resultMap.put("qtQyryList", qtQyryArray);

        return resultMap;
    }

    /**
     * 查询 - 历史表 - 历史记录 - 返回 -变更前，变更后的信息
     */
    public JSONObject lsxx(String sqsxid){
        String ccdx = "";
        Map<String, Object> lsbMap = xzXkMapper.searchLsb(sqsxid);
        if (lsbMap != null){
            Map<String, Object> lsxxMap = xzXkMapper.searchLsjl(lsbMap.get("ID").toString());
            if (lsxxMap != null){
                try {
                    ccdx =  MapUtils.ClobToString((Clob)lsxxMap.get("CCDX"));
                } catch (SQLException e) {
                    log.error("SQLException[]: {}", e.getMessage());
                } catch (IOException e) {
                    log.error("SQLException[]: {}", e.getMessage());
                }
            }
        }

        if (StringUtils.isNotBlank(ccdx)){
            JSONObject jsonObject = JSONObject.parseObject(ccdx);
            return jsonObject;
        }else {
            return new JSONObject();
        }
    }



}
